package model;

import DAO.DAOFactory;
import DAO.UzivatelDAO;
import core.BlogException;
import core.Uzivatel;
import java.util.List;

/**
 * Model pro uzivatele
 * @author vojta
 */
public class UzivatelModel {

    
    DAOFactory f;
    UzivatelDAO dao;

    public UzivatelModel() throws BlogException {
        f = DAOFactory.getInstance();
        dao = f.getUzivatelDAO();
    }

    /**
     * Prida noveho Uzivatele
     * @param c
     * @throws BlogSQLException
     */
    public void addUzivatel(Uzivatel u) throws BlogException {
        if (u.getLogin().length() < 3)
            throw new BlogException("Spatne jmeno u Uzivatele");
        
        if (dao.exists(u))
            throw new BlogException("Uzivatel jiz existuje!");

        dao.addUzivatel(u);
    }

    /**
     * Vrati seznam vsech Uzivatelu
     * @return
     * @throws BlogSQLException
     */
    public List<Uzivatel> getUzivatele() throws BlogException {
        return dao.getUzivatele();
    }
    
    /**
     * Ziska objekt uzivatele
     * @param login - login uzivatele, ktery se ma ziskat
     * @return Uzivatel
     * @throws BlogException 
     */
    public Uzivatel getUzivatel(String login) throws BlogException{ 
        return dao.getUzivatel(login);
    }
    
    /**
     * Zvaliduje jmeno a heslo uzivatele
     * @param u - Uzivatel (jeho id)
     * @return Uzivatel
     * @throws BlogException 
     */
    public Uzivatel validateUzivate(Uzivatel u) throws BlogException {
        return dao.validateUzivate(u);
    }
    
    /**
     * Odstrani uzivatele
     * @param u - Uzivatel
     * @throws BlogException 
     */
    public void removeUzivatel(Uzivatel u) throws BlogException {
        dao.removeUzivatel(u);
    }
    
}
